/**
 * @作者：jiao
 * @日期：2018年6月23日
 * @描述：
 */
package com.shop.dao;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.shop.common.DButils;
import com.shop.entity.admin;

/**
 * @作者：jiao
 * @日期：2018年6月23日
 * @描述：
 */
public class AdminDaoImpl implements AdminDaoI<admin> {

	/* (non-Javadoc)
	 * @see com.shop.dao.AdminDaoI#insert(com.shop.entity.admin)
	 * @作者：jiao
	 * @日期：2018年6月23日
	 * @描述：
	 */
	@Override
	public boolean insert(admin admin) throws Exception  {
	Connection conn=DButils.getConnection();
	String sql="INSERT INTO `admin` ( Aid,password,Aname,phone,sex,money,birthday,timelastlogin,timeregister,Rid\r\n" + 
			") VALUES(?,?,?,?,?,?,?,?,?,?)";
	//创建preparedstatement
		PreparedStatement ps=conn.prepareStatement(sql);
		ps.setString(1, admin.getAid());
		ps.setString(2, admin.getPassword());
		ps.setString(3, admin.getAname());
		ps.setString(4, admin.getPhone());
		ps.setString(5, admin.getSex());
		ps.setInt(6, admin.getMoney());
		ps.setString(7, admin.getBirthday());
		ps.setDate(8, new Date(new java.util.Date().getTime()));
		if(null!=admin.getTimeregister()) {
		ps.setDate(9, new Date(admin.getTimeregister().getTime()));
		}else {
			ps.setDate(9, null);
		}
		ps.setInt(10, admin.getRid());
		
		if(ps.executeUpdate()>0) {
			return true;
		}
			
		return false;
	}

	/* (non-Javadoc)
	 * @see com.shop.dao.AdminDaoI#update(com.shop.entity.admin)
	 * @作者：jiao
	 * @日期：2018年6月23日
	 * @描述：
	 */
	@Override
	public boolean update(admin admin) throws Exception {
		Connection conn=DButils.getConnection();
		String sql="UPDATE `admin` SET  Aid=?,password=?,Aname=?,phone=?,sex=?,money=?,birthday=?,timelastlogin=?,timeregister=?,Rid=? \r\n" + 
				"where Aid=?";
		//创建preparedstatemen
			PreparedStatement ps=conn.prepareStatement(sql);
			ps.setString(1, admin.getAid());
			ps.setString(2, admin.getPassword());
			ps.setString(3, admin.getAname());
			ps.setString(4, admin.getPhone());
			ps.setString(5, admin.getSex());
			ps.setInt(6, admin.getMoney());
			ps.setString(7, admin.getBirthday());
			ps.setDate(8, new Date(new java.util.Date().getTime()));
			if(null!=admin.getTimeregister()) {
			ps.setDate(9, new Date(admin.getTimeregister().getTime()));
			}else {
				ps.setDate(9, null);
			}
			ps.setInt(10, admin.getRid());
			ps.setString(11,admin.getAid());
			
			if(ps.executeUpdate()>0) {
				
				return true;
			}
		return false;
	}

	/* (non-Javadoc)
	 * @see com.shop.dao.AdminDaoI#delete(int)
	 * @作者：jiao
	 * @日期：2018年6月23日
	 * @描述：
	 */
	@Override
	public boolean delete(String Aid) throws Exception {
		Connection conn=DButils.getConnection();
		String sql="delete from `admin` where Aid=?";
		//创建preparedstatement
			PreparedStatement ps=conn.prepareStatement(sql);
			ps.setString(1, Aid);	
			if(ps.executeUpdate()>0) {
				return true;
			}
		return false;
	}

	/* (non-Javadoc)
	 * @see com.shop.dao.AdminDaoI#selectAll()
	 * @作者：jiao
	 * @日期：2018年6月23日
	 * @描述：
	 */
	@Override
	public List<admin> selectAll() throws Exception {
		Connection conn=DButils.getConnection();
		String sql="SELECT Aid,password,Aname,phone,sex,money,birthday,timelastlogin,timeregister,Rid FROM `admin` ";
		PreparedStatement ps=conn.prepareStatement(sql);
		//将数据库中的记录转化为对象
		List<admin> list =new ArrayList<>();
		//结果集
		ResultSet rs =ps.executeQuery();
		while(rs.next()) {
			admin admin=new admin();
			list.add(admin);
			admin.setAid(rs.getString(1));
			admin.setPassword(rs.getString(2));
			admin.setAname(rs.getString(3));
			admin.setPhone(rs.getString(4));
			admin.setSex(rs.getString(5));
			admin.setMoney(rs.getInt(6));
			admin.setBirthday(rs.getString(7));
			admin.setTimelastlogin(rs.getDate(8));
			admin.setTimeregister(rs.getDate(9));
			admin.setRid(rs.getInt(10));
		}
		return list;

	}

	public List<admin> selectWhere( String whereSql) throws Exception {
		Connection conn=DButils.getConnection();
		StringBuffer sb =new StringBuffer();
		sb.append("SELECT Aid,password,Aname,phone,sex,money,birthday,timelastlogin,timeregister,Rid ");
		sb.append("from `admin` where 1=1");
		sb.append(whereSql);
		System.out.println(sb.toString());
		PreparedStatement ps=conn.prepareStatement(sb.toString());
		//将数据库中的记录转化为对象
		List<admin> list =new ArrayList<>();
		//结果集
		ResultSet rs =ps.executeQuery();
		while(rs.next()) {
			admin admin=new admin();
			list.add(admin);
			admin.setAid(rs.getString(1));
			admin.setPassword(rs.getString(2));
			admin.setAname(rs.getString(3));
			admin.setPhone(rs.getString(4));
			admin.setSex(rs.getString(5));
			admin.setMoney(rs.getInt(6));
			admin.setBirthday(rs.getString(7));
			admin.setTimelastlogin(rs.getDate(8));
			admin.setTimeregister(rs.getDate(9));
			admin.setRid(rs.getInt(10));
		}
		return list;
	}
}
